将 Obsidian 笔记发布成博客

在将 Obsidian 作为主力笔记软件 之后,不可避免开始想两个问题:

这里就来记录下我最近针对将 Obsidian 笔记发布成博客或者说在线数字花园(Digital Garden)所折腾的一些经历。首先官方的 Obsidian Publish 是付费的,这自然不在体验范围内,我开始在网上寻找开源代替方案。

这里先描述下我想达成的效果:

在网上找到了这两篇文章:
Obsidian 目前最完美的免费发布方案 渐进式教程 by oldwinter
Flowershow:免费的 Obsidian 笔记发布服务,实现你的数字花园网站

我先尝试了一下 Flowershow。

Flowershow

https://flowershow.app/
Flowershow 可以将 Markdown 文档发布为在线博客网站。

整体流程为:

这个流程非常丝滑,我参考文章完成了上面两步配置,在 Obsidian 中将笔记上传到项目中,这时候出问题了,上传到了项目的根目录下,而不是 content 目录。这样网站就找不到对应的文章,也就不能展示。在我手动将文章移动到 content 目录下后,才可以正常展示。

后面查看他们的文档得知,他们现在在做 Flowershow Cloud 的解决方案,代替了 Vercel 部署,最新的教程是在 Flowershow Cloud 上建立项目,插件也更新为只支持 Flowershow Cloud 方案(两者代码推送的目录不同)。Flowershow Cloud 有免费和付费两种模式,个人项目是免费的,商业项目是付费的,付费也能解锁一些高级用法,比如搜索。之前之所以没有按照最新的教程来实践,其实是有点不放心他们,相比而言,Vercel 更加能接受一些。

我尝试卸载最新的 Obsidian Flowershow 插件,然后手动安装老版本插件,但无法上传成功,可能有一些问题存在。后面我借助 Obsidian 的另一个插件 Enveloppe ,这个插件就是负责将 Obsidian 的笔记上传到某个 Github 仓库中,它是支持配置上传的目录的。所以,这两者结合,也是挺方便地达到想要的效果。
网站地址:https://jewel-notes.vercel.app/

我不会采用该方案作为我的发布方案,因为目前该团队是希望将 Flowershow 打造成一个收费项目,免费版的功能也受限,对于使用 Vercel 的自托管方式也不积极了。

Digital Garden

https://github.com/oleeskild/obsidian-digital-garden

另一个我觉得做的挺不错的项目是 Digital Garden,它的使用姿势基本上和 Flowershow 是一样的,在 Github 上创建项目,在 Vercel 上部署,通过 Obsidian Digital Garden 插件将笔记上传到项目的特定目录下,就可以进行展示了。
这个项目的 UI 更加接近 Obsidian 本地的 UI,并且还可以支持切换 Obsidian 的主题。功能上也不少,可以展示笔记的文件树、跳转双链、展示反向链接、支持搜索、展示 Graph 等。

最让我感觉心动的是基于它的一个网站:https://teresawatts.com/,这效果也太赞了。

我准备采用该方案作为目前的发布方案。该方案包含三个角色:

配置过程如下:

  1. Digital Garden 提供了一个 Github 仓库模板(digital-garden),打开该项目,能在 REAME 中看到一个 Vercel 的按钮,点击这个按钮就会自动帮我们创建一个 Github 仓库,可以设为私有仓库,同时会在 Vercel 上建立一个对这个仓库的项目,用于执行 CI 流程。
  2. 在 Github 设置 > Developer Settings > Personal access token,给 Digital Garden 的 Obsidian 插件申请一个 Access token,用来从 Digital Garden 插件中向 Github 仓库提交改动,比如把文章推送到仓库中,修改网站的一些配置等。推荐使用新出的 Fine-grained tokens,它可以配置这个 Token 只能访问某个特定的仓库,安全性更好。生成 Token 后,复制 Token,在下一步需要用到。
  3. 在 Obsidian 社区插件市场中下载 Digital Garden 插件,打开设置页,必须的配置有三项,Github 用户名、Github 仓库名、Access Token,依次填写好后,设置页中 Github Authentication(required)后面还会显示一个 ✅,表示配置成功,非常贴心。到此这个插件就配置成功了。设置页下面还有其他主题、功能的配置,这里不赘述了。

发布笔记的流程也非常简单,在 Obsidian 中直接写,然后在笔记的 Meta Info 里添加一个 dg-publish: true 的信息,然后点击 Commend + P,唤出命令面板,搜索 Digital Garden,能找到一条命令是 Digital Garden: Publish Single Note,点击该命令就可以将笔记发布啦。

我们需要创建一个首页笔记,这样在打开博客网站时,直接看到的就是这篇笔记,设置首页笔记的方式也很简单,给一篇笔记 Meta Info 中加上 dg-home: truedg-publish: true 的信息即可。首页笔记只能有一个,所以其他笔记就不要加 dg-home 信息了。

此外,我还在我的域名管理平台上,申请了一个二级域名,映射到 Vercel 提供的原始域名上,这样就可以使用自己的域名来打开网站了。这是我的网站地址:Jewel Notes,效果如下:

其他开源选择

除了这两个,我还看了一些其他的方案,有些很强大,但是配置稍显复杂,不太容易上手;有些已经不再维护,有些则刚刚开源。真的可以说是百花齐放,百家争鸣。

Quartz

https://github.com/jackyzha0/quartz
这个看起来功能非常强大,也不仅限于 Obsidian 使用,但感觉配置起来有点复杂,并且是需要使用 CLI 来进行发布。我目前更加希望使用 Obsidian 的插件。

Perlite

https://github.com/secure-77/Perlite/

MindStone

https://github.com/TuanManhCao/digital-garden
这个项目挺久没有更新了,看着基础功能都是有的,也是使用本地命令来执行。

Yasow

https://github.com/khoeos/Yasow
这是在 Reddits 上发现的一款还处于比较早期的工具。看了下 Demo 网站,其实效果还是不错的,不过文档还不完善,没有一个使用文档。